Random access memory (RAM) is a type of storage for computing devices. RAM is typically associated with volatile memory that is implemented in integrated circuits and in which stored information is lost when power provided to the RAM is switched off.
One type of RAM is known as DDR SDRAM (double-data-rate synchronous dynamic random access memory). DDR SDRAM is typically used in computing applications that require high bandwidth and low la.tency memory access. One version of this memory technology is known as DDR3 SDRAM, which can provide for high performance data rates, high bandwidth, high density, and low power consumption relative to earlier generations of SDRAM.
The high bandwidth and high operating frequencies required to drive DDR SDRAM can be problematic as they can make the controller to memory interface electrically complex due to signal integrity considerations. A DDR3 SDRAM controller and associated memory may perform read and write operations synchronously based on a periodic signal transmitted over a “strobe” line. Static and dynamic timing variations between the strobe line and a data line can cause memory errors. Static variations that cause timing skew between the strobe and data lines may be due to, for example, on-die process and wire variations across strobe and data logic, on-chip power supply grid variations, package and board interconnect, and material variations. Dynamic timing variations may be caused by short or long term voltage drift and temperature changes during functional operation of the interface.
Existing techniques to compensate for timing skew in memory circuits are frequently based on delay locked loops (DLLs). A DLL is a circuit that can be used to change the phase of a periodic signal to reduce skew between the strobe and data lines in a RAM. More particularly, in a DDR SDRAM, DLLs are used to generate a quarter cycle offset for source synchronous clocks or strobe lines that are used for latching data in read and write cycles. DLL methods, however, tend to not de-skew potentially large static variations that may occur on individual bits or bytes of the DDR SDRAM lines.